home *** CD-ROM | disk | FTP | other *** search
-
- vb2091 0.2b (c) in 1994 by Volker Barthelmann
-
- INTRODUCTION
-
- ZorroII boards can only reach the lower 16MB of address space. So DMA
- SCSI controllers must find another way to transfer data to expansion
- RAM. Some of them (especially the A2091) do a very bad job in this
- situation. In an A4000/40 transfer rates may drop to 50KB/s.
- This program patches the (2nd.)scsi.device to use MEMF_24BITDMA
- RAM as a buffer followed (in case of CMD_READ) by CopyMem().
- It was developed with the A4000/A2091 combinbation in mind, but
- should work with other configurations, too (see REQUIREMENTS). Some
- people reported good results with GVP controllers.
-
- There have been some bugfixes, additional options and changes of the
- commandline options since the last public release. So I am afraid all
- users of previous versions will have to read this manual again
- (especially the USAGE section).
-
-
- FEATURES
-
- There are already some PD utilities floating around that do a similar
- job. So why may this one be better?
-
- - It patches the device instead of the Read() & Write() DOS-functions,
- giving the following advantages:
-
- o Programs accessing the device directly (e.g. SysInfo, SCSI-Speed
- or tape-handlers) are patched, too.
- o Patching Read() doesn't seem to have any influence on LoadSeg(), so
- those patches don't speedup loading of programs whereas vb2091 does.
- o It is possible to use double-buffering and load into one buffer
- while copying the contents of the other one to fastram. This makes
- higher transfer rates possible. I wasn't able to get more than
- 800KB/s with DOS-level-patches, but could get over 1MB/s with
- vb2091.
-
- - Some early A4000s (including mine :-( ) can't do DMA to onboard ram.
- On such A4000s every transfer to/from chipmem will cause the
- computer to hang. vb2091 can be told to redirect those transfers too.
-
- WARNING
-
- FIRST: READ THIS ENTIRE FILE BEFORE TRYING OUT vb2091 !!
- (This is meant seriously - I know this is a very badly written manual,
- but it mentions some very important points.)
-
- This program is still beta and I can't give any warranty about anything.
- I have tested it for some time and have not encountered serious
- problems, but had no opportunity to test vb2091 on other configs,
- so there may still be many bugs.
- It seems to work fine with my system (A4000/40, broken DMA, A2091/7.0
- ROMs, Quantum LPS270S+LT730, Tandberg streamer) in conjunction with
- MapBoard, however there may be problems with the serial port.
-
- REQUIREMENTS
-
- vb2091 has been compiled with gcc, so it needs ixemul.library in libs:
- and ENV: assigned. Keep this in mind when placing it in Your startup-
- sequence. There will probably be a version that has been compiled with SAS
- in this distribution. This version doesn't have these requirements.
-
- As it uses the exec-functions CopyMem()/CacheControl(), it doesn't work
- with early versions of Kickstart (sorry, I don't know since when these
- functions are present - probably since 2.0).
- vb2091 does not check for a correct version at the moment (sorry).
-
- You must have some MEMF_24BITDMA RAM (e.g. RAM on the controller or
- chipmem) to be used as a buffer.
-
- I hope I haven't forgotten anything (of course a controller and some
- expansion RAM would be quite useful).
-
-
- USAGE
-
- [run] vb2091 UNIT <unitlist> [DEVICE <device>] [BUFSIZE <bufsize>]
- [MAXN <number>] [MIN1BUF <size>] [MIN2BUF <size>]
- [BROKEN] [SINGLE] [NOCACHE] [NOWRITE]
-
- All the keywords must be uppercase! (sorry)
-
- UNIT List of unitnumbers of devices to be patched, not separated by
- spaces or commas, e.g. 014 for device 0, 1 and 4.
- (default: no default - this MUST be specified)
-
- DEVICE Name of the device to be patched.
- (default: 2nd.scsi.device)
-
- BUFSIZE Size of buffer in kilobytes.
- (default: 256)
-
- BROKEN Use this if You have got an A4000 that cannot DMA the chipmem.
- You MUST have some 24Bit fastmem (e.g. on the controller)
- then - vb2091 will only accept MEMF_FAST|MEMF_24BITDMA RAM
- as buffer then.
-
- SINGLE Normally vb2091 uses double-buffering to get slightly higher
- transfer rates; use SINGLE, if free processor time is more
- important to You. Currently only CMD_READ is double-buffered,
- CMD_WRITE is not.
-
- NOWRITE If You specify this option, only CMD_READ ist patched, whereas
- CMD_WRITE will be unchanged. Use this if You don't trust
- vb2091.
-
- NOCACHE If this option is specified, the DataCache will be disabled
- before CopyMem() and enabled after finishing; this will speedup
- CopyMem() (at least on a 040). This has not been tested very
- well, so be careful with this option.
-
- MAXN <number> (default: 16)
- MIN1BUF <size in kilobytes> (default: 128)
- MIN2BUF <size in kilobytes> (default: 64)
- These options can be used to adjust some parameters which are
- used with double buffering. If a block of size l is to be read
- then vb2091 will probably split the transfer into smaller blocks
- for better use of double buffering. If l<MIN1BUF then vb2091
- will use one transfer of l bytes (i.e. no double buffering), if
- possible. If l>MAXN*MIN2BUF then the transfer will be split into
- MAXN parts. If none of those conditions is true then the transfer
- will be split into blocks of size MIN2BUF.
- I thought about a rather simple method to let the user adjust the
- buffers in different situations without having to specify one
- BUFSIZE for almost every single transfer size. The method I used is
- just heuristic and the default values were chosen rather arbitrary
- and optimal values may be quite different (especially on different
- systems). MIN2BUF shall be set to the smallest size which achieves
- good transfer speeds with little cpu usage. So MIN2BUF is the value
- which should usually be used as buffer size (yielding high rates
- and as many chunks, i.e. best use of double buffering, as possible).
- But if the transfer size is a little larger than MIN2BUF, it
- wouldn't be a good idea to usee double buffering with those chunks.
- E.g. with MIN2BUF=64k a 65k transfer would be split up in a 64k
- transfer and a 1k transfer. Although I haven't tested it, one 65k
- transfer should be better. Because of this You can prevent double
- buffering for any transfers less than MIN1BUF. I set
- MIN1BUF=2*MIN2BUF for default, but this may be too large.
- Now if You have very large transfers (e.g. 4MB), then it would be
- split up into 64 64k chunks. But from a certain number of chunks it
- should be better not to raise the number of chunks but the size of
- the chunks (especially as MIN2BUF should be set as small as
- possible). This is what MAXN is for - however this is rather
- theoretical, because I doubt that transfers that large will occur
- often (if at all).
- As said before this method can be argued (especially as I almost
- haven't tested if my thoughts are true in reality) and the default
- values may be far from optimal. So everybody who wants almost
- optimal performance has to find out his personal values (they also
- depend on the applications You use, because You can configure
- vb2091 for best speed or least cpu usage or something inbetween).
-
-
- Example:
- run >NIL: vb2091 DEVICE scsi.device BUFSIZE 128 MAXN 8 UNIT 046
-
-
- You can remove the patch by sending vb2091 a CTRL-C/break - but don't
- do this while any program is using the device.
-
-
- SOURCE
-
- I decided to distribute the source in order to raise chances of finding
- bugs. You should be able to compile it using gcc (I used 2.3.3) or SAS.
- It is NOT meant to be an example of good programming and I am not liable
- for anyone turning into stone after looking at it.
-
-
- CREDITS
-
- This program would not exist without the help of Olaf Seibert (another
- poor fellow with a broken A4000) who encouraged me to write it and
- provided me with helpful information. Thank You, Olaf!
- Thomas Boerkel did the changes for SAS and compiled it.
- Several testers helped to remove some bugs of the older versions and made
- suggestions for improvement.
-
- LEGAL
-
- vb2091 may be freely distributed as long as no part of the distribution
- is changed.
-
- This program is Bearware: If You like it, You can send me something
- with a bear on it.
-
- But more important:
-
- If You try it, please send me Your experiences, bugreports,
- suggestions etc.
-
-
-
-
- Volker Barthelmann
- Kennedy-Ring 39
- 91301 Forchheim
- Germany
-
- I should be reachable per eMail via:
-
- volker@vb.franken.de
-
-
-